package com.attendance.util;

import com.attendance.entity.Employee;
import io.jsonwebtoken.*;

import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.util.*;

/**
 * JWT工具类
 */
public class JwtUtil {
    //配置全局密钥

    //  2.获取jwt的构造器
    //3.封装header，payload，signature这三部分属性

    //4.调用compact方法帮我们生成token
    //有效期
    public static String creatToken(Long id) {
        String signature = "ccisnotc";

        JwtBuilder builder = Jwts.builder();
        Map map=new HashMap();
        map.put("EmpId",id);
        //使用构造器里的方法封装属性
        String token = builder.
                //封装header属性
                        setHeaderParam("typ", "JWT").
                setHeaderParam("alg", "HS256")
                //封装payload里的信息 使用claim方法
                .setClaims(map)
                //在payLoad中设置一个超时时间  秒   分 时
                .setExpiration(new Date(System.currentTimeMillis() + Long.valueOf(1000 * 60 * 60 * 1)))
                .setId("1111111111111111")
                //构造signature部分
                .signWith(SignatureAlgorithm.HS256, signature)
                //构造我们的签名 调用compact方法
                .compact();
        return token;
    }
    public static Claims parseJwt(String token){
        String signature = "ccisnotc";

        JwtParser parser = Jwts.parser();
        Jws<Claims> claimsJws = parser.setSigningKey(signature).parseClaimsJws(token);
        Claims body = claimsJws.getBody();
        return body;
    }

}


